package pe.gob.onpe.ejb;

import java.util.Date;
import java.util.HashSet;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 * PadronElectoralOnpe entity.
 * 
 * @author MyEclipse Persistence Tools
 */
@Entity
@Table(name = "PADRON_ELECTORAL_ONPE", schema = "SVENP", uniqueConstraints = {})
public class PadronElectoralOnpe implements java.io.Serializable {

	private static final long serialVersionUID = -2365587835824040029L;
	private String numerodocumento;
	private Ubigeo ubigeo;
	private String digitoverificacion;
	private String numeromesa;
	//private String ubigeo_1;
	private String apellidopaterno;
	private String apellidomaterno;
	private String nombres;
	private Date fechanacimiento;
	private String sexo;
	private String gradoinstruccion;
	private String tipodocumento;
	private Set<Candidato> candidatos = new HashSet<Candidato>(0);

	// Constructors

	/** default constructor */
	public PadronElectoralOnpe() {
	}

	/** minimal constructor */
	public PadronElectoralOnpe(String numerodocumento, Ubigeo ubigeo,
			String digitoverificacion, String numeromesa, 
			String nombres, Date fechanacimiento, String sexo,
			String gradoinstruccion, String tipodocumento) {//String ubigeo_1,
		this.numerodocumento = numerodocumento;
		this.ubigeo = ubigeo;
		this.digitoverificacion = digitoverificacion;
		this.numeromesa = numeromesa;
		//this.ubigeo_1 = ubigeo_1;
		this.nombres = nombres;
		this.fechanacimiento = fechanacimiento;
		this.sexo = sexo;
		this.gradoinstruccion = gradoinstruccion;
		this.tipodocumento = tipodocumento;
	}

	/** full constructor */
	public PadronElectoralOnpe(String numerodocumento, Ubigeo ubigeo,
			String digitoverificacion, String numeromesa, 
			String apellidopaterno, String apellidomaterno, String nombres,
			Date fechanacimiento, String sexo, String gradoinstruccion,
			String tipodocumento, Set<Candidato> candidatos) {//String ubigeo_1,
		this.numerodocumento = numerodocumento;
		this.ubigeo = ubigeo;
		this.digitoverificacion = digitoverificacion;
		this.numeromesa = numeromesa;
		//this.ubigeo_1 = ubigeo_1;
		this.apellidopaterno = apellidopaterno;
		this.apellidomaterno = apellidomaterno;
		this.nombres = nombres;
		this.fechanacimiento = fechanacimiento;
		this.sexo = sexo;
		this.gradoinstruccion = gradoinstruccion;
		this.tipodocumento = tipodocumento;
		this.candidatos = candidatos;
	}

	// Property accessors
	@Id
	@Column(name = "NUMERODOCUMENTO", unique = true, nullable = false, insertable = true, updatable = true)
	public String getNumerodocumento() {
		return this.numerodocumento;
	}

	public void setNumerodocumento(String numerodocumento) {
		this.numerodocumento = numerodocumento;
	}

	@ManyToOne(cascade = {}, fetch = FetchType.LAZY)
	@JoinColumn(name = "UBIGEO", unique = false, nullable = false, insertable = true, updatable = true)
	public Ubigeo getUbigeo() {
		return this.ubigeo;
	}

	public void setUbigeo(Ubigeo ubigeo) {
		this.ubigeo = ubigeo;
	}

	@Column(name = "DIGITOVERIFICACION", unique = false, nullable = false, insertable = true, updatable = true)
	public String getDigitoverificacion() {
		return this.digitoverificacion;
	}

	public void setDigitoverificacion(String digitoverificacion) {
		this.digitoverificacion = digitoverificacion;
	}

	@Column(name = "NUMEROMESA", unique = false, nullable = false, insertable = true, updatable = true)
	public String getNumeromesa() {
		return this.numeromesa;
	}

	public void setNumeromesa(String numeromesa) {
		this.numeromesa = numeromesa;
	}

	/*@Column(name = "UBIGEO", unique = false, nullable = false, insertable = true, updatable = true)
	public String getUbigeo_1() {
		return this.ubigeo_1;
	}

	public void setUbigeo_1(String ubigeo_1) {
		this.ubigeo_1 = ubigeo_1;
	}*/

	@Column(name = "APELLIDOPATERNO", unique = false, nullable = true, insertable = true, updatable = true)
	public String getApellidopaterno() {
		return this.apellidopaterno;
	}

	public void setApellidopaterno(String apellidopaterno) {
		this.apellidopaterno = apellidopaterno;
	}

	@Column(name = "APELLIDOMATERNO", unique = false, nullable = true, insertable = true, updatable = true)
	public String getApellidomaterno() {
		return this.apellidomaterno;
	}

	public void setApellidomaterno(String apellidomaterno) {
		this.apellidomaterno = apellidomaterno;
	}

	@Column(name = "NOMBRES", unique = false, nullable = false, insertable = true, updatable = true)
	public String getNombres() {
		return this.nombres;
	}

	public void setNombres(String nombres) {
		this.nombres = nombres;
	}

	@Temporal(TemporalType.DATE)
	@Column(name = "FECHANACIMIENTO", unique = false, nullable = false, insertable = true, updatable = true, length = 7)
	public Date getFechanacimiento() {
		return this.fechanacimiento;
	}

	public void setFechanacimiento(Date fechanacimiento) {
		this.fechanacimiento = fechanacimiento;
	}

	@Column(name = "SEXO", unique = false, nullable = false, insertable = true, updatable = true)
	public String getSexo() {
		return this.sexo;
	}

	public void setSexo(String sexo) {
		this.sexo = sexo;
	}

	@Column(name = "GRADOINSTRUCCION", unique = false, nullable = false, insertable = true, updatable = true)
	public String getGradoinstruccion() {
		return this.gradoinstruccion;
	}

	public void setGradoinstruccion(String gradoinstruccion) {
		this.gradoinstruccion = gradoinstruccion;
	}

	@Column(name = "TIPODOCUMENTO", unique = false, nullable = false, insertable = true, updatable = true)
	public String getTipodocumento() {
		return this.tipodocumento;
	}

	public void setTipodocumento(String tipodocumento) {
		this.tipodocumento = tipodocumento;
	}

	@OneToMany(cascade = { CascadeType.ALL }, fetch = FetchType.LAZY, mappedBy = "padronElectoralOnpe")
	public Set<Candidato> getCandidatos() {
		return this.candidatos;
	}

	public void setCandidatos(Set<Candidato> candidatos) {
		this.candidatos = candidatos;
	}

}